using System;
using System.Collections.Generic;

namespace YouVisio.Silverlight.TextDiff
{
    public interface IDiffAnalyser
    {
        DiffPartsList Analyse<TSource, TPart>(
                                    IEqualityComparer<TPart> comparer,
                                    IPartsRetriever<TSource, TPart> beforeChange,
                                    IPartsRetriever<TSource, TPart> afterChange,
                                    int beforeChangeStartIndex = -1,
                                    int afterChangeStartIndex = -1,
                                    int length = Int32.MaxValue);

        PartsAggregationState<TAccumulator, TSource, TPart> AggregateParts<TAccumulator, TSource, TPart>(
                                    PartsAggregationState<TAccumulator, TSource, TPart> state);
    }
}